; ModuleID = 'expr'
source_filename = "expr"

@0 = private unnamed_addr constant [16 x i8] c"expr value: %d\0A\00", align 1

declare i32 @printf(ptr, ...)

define i32 @main() {
entry:
  %a = alloca i32, align 4
  store i32 3, ptr %a, align 4
  %a1 = load i32, ptr %a, align 4
  %b = alloca i32, align 4
  store i32 5, ptr %b, align 4
  %b2 = load i32, ptr %b, align 4
  br label %for_init

for_init:                                         ; preds = %entry
  %i = alloca i32, align 4
  store i32 0, ptr %i, align 4
  %i3 = load i32, ptr %i, align 4
  br label %for_cond

for_cond:                                         ; preds = %for_inc, %for_init
  %i4 = load i32, ptr %i, align 4
  %less = icmp slt i32 %i4, 4
  %0 = sext i1 %less to i32
  %1 = icmp ne i32 %0, 0
  br i1 %1, label %for_body, label %for_last

for_inc:                                          ; preds = %if_last11, %if_then
  %i17 = load i32, ptr %i, align 4
  %add18 = add nsw i32 %i17, 1
  store i32 %add18, ptr %i, align 4
  %i19 = load i32, ptr %i, align 4
  br label %for_cond

for_body:                                         ; preds = %for_cond
  br label %if_cond

for_last:                                         ; preds = %if_then10, %for_cond
  %a20 = load i32, ptr %a, align 4
  %b21 = load i32, ptr %b, align 4
  %a22 = load i32, ptr %a, align 4
  %add23 = add nsw i32 %b21, %a22
  %sub = sub nsw i32 %add23, 3
  %mul24 = mul nsw i32 %a20, %sub
  %sub25 = sub nsw i32 %mul24, 2
  %2 = call i32 (ptr, ...) @printf(ptr @0, i32 %sub25)
  ret i32 0

if_cond:                                          ; preds = %for_body
  %a5 = load i32, ptr %a, align 4
  %greater_equal = icmp sge i32 %a5, 6
  %3 = sext i1 %greater_equal to i32
  %4 = icmp ne i32 %3, 0
  br i1 %4, label %if_then, label %if_last

if_then:                                          ; preds = %if_cond
  br label %for_inc

if_last:                                          ; preds = %for_continue_death, %if_cond
  %a6 = load i32, ptr %a, align 4
  %i7 = load i32, ptr %i, align 4
  %add = add nsw i32 %a6, %i7
  store i32 %add, ptr %a, align 4
  %a8 = load i32, ptr %a, align 4
  br label %if_cond9

if_cond9:                                         ; preds = %if_last
  %b12 = load i32, ptr %b, align 4
  %greater = icmp sgt i32 %b12, 10
  %5 = sext i1 %greater to i32
  %6 = icmp ne i32 %5, 0
  br i1 %6, label %if_then10, label %if_last11

if_then10:                                        ; preds = %if_cond9
  br label %for_last
  br label %if_last11

if_last11:                                        ; preds = %if_then10, %if_cond9
  %b13 = load i32, ptr %b, align 4
  %i14 = load i32, ptr %i, align 4
  %mul = mul nsw i32 2, %i14
  %add15 = add nsw i32 %b13, %mul
  store i32 %add15, ptr %b, align 4
  %b16 = load i32, ptr %b, align 4
  br label %for_inc
}
